/* ---------- 生成单颗流星 ---------- */
function launchMeteor() {
    const m = document.createElement('div');
    m.className = 'meteor';
    /* 起点逻辑：四区随机（上方外部 / 右侧外部 / 内部靠右 / 右上极端角） */
    const zone = Math.floor(Math.random() * 4);
    let x, y;
    switch (zone) {
        case 0:   // 上方外部
            x = Math.random() * (window.innerWidth + 400) - 200;
            y = - (100 + Math.random() * 300);
            break;
        case 1:   // 右侧外部
            x = window.innerWidth + 100 + Math.random() * 500;
            y = Math.random() * (window.innerHeight + 400) - 200;
            break;
        case 2:   // 内部靠右
            x = window.innerWidth - Math.random() * 300;
            y = Math.random() * window.innerHeight;
            break;
        case 3:   // 右上角
            x = window.innerWidth - Math.random() * 150;
            y = - (Math.random() * 150);
            break;
    }
    m.style.left = x + 'px';
    m.style.top  = y + 'px';
    m.style.animation = 'meteor 5s linear forwards';
    m.addEventListener('animationend', () => m.remove());
    document.body.appendChild(m);
}

/* ---------- 定时器控制 ---------- */
let timer = null;
function startRain() {
    if (timer) return;               // 已启动就跳过
    for (let i = 0; i < 8; i++) setTimeout(launchMeteor, i * 200);
    timer = setInterval(launchMeteor, 600);
}
function stopRain() {
    if (timer) {
        clearInterval(timer);
        timer = null;
    }
    // 把现有流星全部移除，防止切回雪崩
    document.querySelectorAll('.meteor').forEach(m => m.remove());
}

/* 页面可见性 API：切走暂停 / 切回重启 */
document.addEventListener('visibilitychange', () => {
    document.hidden ? stopRain() : startRain();
});

/* 首次加载启动 */
window.addEventListener('load', startRain);